Na aceleração por GPU, devemos abandonar a mentalidade de "computação primeiro". O desempenho moderno é determinado por Gestão de Memória: a coordenação da alocação, sincronização e otimização dos dados entre o host (CPU) e o dispositivo (GPU).
1. A Disparidade entre Memória e Computação
Enquanto o rendimento aritmético da GPU ($TFLOPS$) aumentou exponencialmente, a largura de banda da memória ($GB/s$) cresceu muito mais lentamente. Isso cria uma lacuna em que as unidades de execução muitas vezes estão "privadas", aguardando dados chegarem da VRAM. Consequentemente, programação para GPU frequentemente é programação de memória.
2. O Modelo Roofline
Este modelo visualiza a relação entre Intensidade Aritmética (FLOPs/Byte) e desempenho. As aplicações normalmente se dividem em duas categorias:
- Limitado pela Memória: Limitado pela largura de banda (a inclinação íngreme).
- Limitado pela Computação: Limitado pelos TFLOPS máximos (o teto horizontal).
3. A Taxa de Movimentação de Dados
O principal gargalo de desempenho raramente é a matemática; é a latência e o custo energético de mover um byte pela barramento PCIe ou da HBM. Códigos de alto desempenho priorizam a localização dos dados e minimizam as transferências entre host e dispositivo.